home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1993 / MacHack 1993.toast / MacHack™ 1987-1992 / MacHack™ '90 / Other Stuff / Demos ƒ / TOPS SoftTalk Package / STServer ƒ / CSTServerApp.c next >
Encoding:
C/C++ Source or Header  |  1989-09-08  |  4.7 KB  |  252 lines  |  [TEXT/MPS ]

  1. /*
  2. ------------------------------------------------------------------------------
  3. |    Sun Microsystems, TOPS Division
  4. |    950 Marina Village Parkway
  5. |    P.O. Box 4016
  6. |    Alameda, CA 94501
  7. |    
  8. |    Copyright (c) 1989 Sun Microsystems, Inc. All rights reserved.
  9. |    
  10. |    Sun considers its source code as an unpublished, proprietary trade secret,
  11. |    and it is available only under strict license provisions. This copyright
  12. |    notice is placed here only to protect Sun in the event the source is deemed
  13. |    a published work. Disassembly, decompilation, or other means of reducing the
  14. |    object code to human readable form is prohibited by the license agreement
  15. |    under which this code is provided to the user or company in possession of
  16. |    this copy.
  17. |    
  18. |    RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the Government
  19. |    is subject to restrictions as set forth in subparagraph (c) (1) (ii) of the
  20. |    Rights in Technical Data and Computer Software clause at DFARS 52.227-7013
  21. |    and in similar clauses in the FAR and NASA FAR supplement.
  22. ------------------------------------------------------------------------------
  23. */
  24.  
  25.  
  26.  
  27.  
  28. /*
  29.  
  30.     IMPLEMENTATION CSTServerApp
  31.  
  32. */
  33.  
  34. #include "CSTServerApp.h"
  35. #include "STServer.h"
  36. #include "SetSelfSend.h"
  37.  
  38.  
  39. /*** constants  ***/
  40. #define    kNumLines (25)
  41. #define    kWindowWidth (400)
  42. #define    kTop    (50)
  43. #define    kLeft    (10)
  44.  
  45. /* menu stuff */
  46. #define    iClearWindow    (1)
  47. #define    iDebugger    (2)
  48. #define    iQuit    (4)
  49.  
  50. #define    mServer    (mEdit+1)
  51. #define    iCreateServer    (1)
  52. #define    iDestroyServer    (2)
  53.  
  54. /* cmd numbers */
  55. #define    cClearWindow    (1000)
  56. #define    cCreateServer    (1001)
  57. #define    cDestroyServer    (1002)
  58. #define    cDebugger        (1003)
  59.  
  60.  
  61.  
  62. /***  METHODS for CSTServerApp  ***/
  63. void CSTServerApp::ISTServerApp(void) {
  64.     this->IApplication('????');
  65.     this->CreateWindow();
  66.     if (SetSelfSend() != noErr) {
  67.         SysBeep(1);
  68.         ExitToShell();
  69.         }
  70.     fServerIsOpen = FALSE;
  71. }
  72.  
  73. void CSTServerApp::MainEventLoop(void) {
  74.     STServerTrigger();
  75.     inherited::MainEventLoop();
  76. }
  77.  
  78. void CSTServerApp::CreateWindow(void) {
  79.     Point p;
  80.     CWriteLnWindow* w;
  81.     
  82.     p.h = kLeft;
  83.     p.v = kTop;
  84.     w = new(CWriteLnWindow);
  85.     w->IWriteLnWindow((unsigned char *)"\pServer Window", kNumLines, kWindowWidth, p);
  86.     fWindow = w;
  87. }
  88.  
  89. void CSTServerApp::DoIdle(EventRecord* e) {
  90.     /*
  91.     static INT32 idleCount = 0;
  92.     Str255 msg;
  93.     
  94.     idleCount++;
  95.     NumToString(idleCount,msg);
  96.     fWindow->WriteLn(msg);
  97.     fWindow->NewLine();
  98.     */
  99. }
  100.  
  101.  
  102. void CSTServerApp::CreateServer(void) {
  103.     INT32 err;
  104.     Str255 msg;
  105.  
  106.     if (fServerIsOpen) {
  107.         SysBeep(1);
  108.         return;
  109.         }
  110.  
  111.      STServerCreate();
  112.     fServerIsOpen = TRUE;
  113. }
  114.  
  115.  
  116. void CSTServerApp::DestroyServer(void) {
  117.     if (!fServerIsOpen) {
  118.         SysBeep(1);
  119.         return;
  120.         }
  121.  
  122.     STServerDispose();
  123.     fServerIsOpen = FALSE;
  124. }
  125.  
  126.  
  127. void CSTServerApp::Msg(Str255 msg) {
  128.     fWindow->WriteLn(msg);
  129. }
  130.  
  131. void CSTServerApp::NewLine(void) {
  132.     fWindow->NewLine();
  133. }
  134.  
  135.  
  136.  
  137.  
  138. void CSTServerApp::CreateMenus(void) {
  139.     char appleString[2];
  140.     appleString[0] = 0x1;
  141.     appleString[1] = appleMark;
  142.     fAppleMenu = NewMenu(mApple, appleString);
  143.     AppendMenu(fAppleMenu, "\pAbout Server...;(-");
  144.     AddResMenu(fAppleMenu, 'DRVR');
  145.     InsertMenu(fAppleMenu, 0);
  146.  
  147.     fFileMenu = NewMenu(mFile, "\pFile");
  148.     AppendMenu(fFileMenu, "\pClear Window/W;Debugger/M;(-;Quit/Q");
  149.     InsertMenu(fFileMenu, 0);
  150.  
  151.     fEditMenu = NewMenu(mEdit, "\pEdit");
  152.     AppendMenu(fEditMenu, "\pCut/X;Copy/C;Paste/V");
  153.     InsertMenu(fEditMenu, 0);
  154.  
  155.     fServerMenu = NewMenu(mServer, "\pServer");
  156.     AppendMenu(fServerMenu, "\pOpen/C;Close/D");
  157.     InsertMenu(fServerMenu, 0);
  158.  
  159.     DrawMenuBar();
  160. }
  161.  
  162.  
  163. INT16 CSTServerApp::MenuSelectionToCmd(INT16 menu, INT16 item) {
  164.     INT16 returnValue = cNoCmd;
  165.  
  166.     switch (menu) {
  167.         case mFile:
  168.             switch(item) {
  169.                 case iClearWindow:
  170.                     returnValue = cClearWindow;
  171.                     break;
  172.                 
  173.                 case iDebugger:
  174.                     returnValue = cDebugger;
  175.                     break;
  176.                 
  177.                 case iQuit:
  178.                     returnValue = cQuit;
  179.                     break;
  180.                 }
  181.             break;
  182.         
  183.         case mServer:
  184.             switch(item) {
  185.                 case iCreateServer:
  186.                     returnValue = cCreateServer;
  187.                     break;
  188.                 
  189.                 case iDestroyServer:
  190.                     returnValue = cDestroyServer;
  191.                     break;
  192.                 }
  193.                 break;
  194.         
  195.         default:
  196.             returnValue = inherited::MenuSelectionToCmd(menu,item);
  197.         }
  198.     
  199.     return(returnValue);
  200. }
  201.  
  202.  
  203. void CSTServerApp::DoMenuCmd(INT16 cmd) {
  204.     switch (cmd) {
  205.         case cClearWindow:
  206.             this->DoClear();
  207.             break;
  208.         
  209.         case cDebugger:
  210.             this->DoDebugger();
  211.             break;
  212.         
  213.         case cCreateServer:
  214.             this->DoCreateServer();
  215.             break;
  216.  
  217.         case cDestroyServer:
  218.             this->DoDestroyServer();
  219.             break;
  220.             
  221.         default:
  222.             inherited::DoMenuCmd(cmd);
  223.             break;
  224.         }
  225. }
  226.  
  227.  
  228. /** menu actions **/
  229. void CSTServerApp::Quit(void) {
  230.     this->DoDestroyServer();
  231.     inherited::Quit();
  232. }
  233.  
  234. void CSTServerApp::DoDebugger(void) {
  235.     Debugger();
  236. }
  237.  
  238. void CSTServerApp::DoClear(void) {
  239.     fWindow->ClearContents();
  240.     fWindow->Invalidate();
  241. }
  242.  
  243. void CSTServerApp::DoCreateServer(void) {
  244.     this->CreateServer();
  245. }
  246.  
  247. void CSTServerApp::DoDestroyServer(void) {
  248.     this->DestroyServer();
  249. }
  250.  
  251.  
  252.